// Package types define the structure of request parameters and return results in this package
package types

import (
	"time"

	"github.com/zhufuyi/sponge/pkg/mysql/query"
)

var _ time.Time

// CreateTkGeneralizeRequest create params
// todo fill in the binding rules https://github.com/go-playground/validator
type CreateTkGeneralizeRequest struct {
	AdID           int    `json:"ad_id" binding:""`            // 广告id
	AdAccountID    int    `json:"ad_account_id" binding:""`    // 广告账户id
	TripartiteAdID string `json:"tripartite_ad_id" binding:""` // 第三方广告id
	ClickID        string `json:"click_id" binding:""`         // 广告用户唯一标识
	StytemType     string `json:"stytem_type" binding:""`      // 系统类型
	ProductID      int    `json:"product_id" binding:""`       // 商品ID
	PromoteID      int    `json:"promote_id" binding:""`       // 推广位ID
	ChannelID      string `json:"channel_id" binding:""`       // 渠道ID
	ChannelType    int    `json:"channel_type" binding:""`     // 平台id:1:腾讯，2：视频号广告
	CallbackNode   string `json:"callback_node" binding:""`    //  回传行为:	"COMPLETE_ORDER": "下单","PURCHASE":      "购买",
	DeviceInfo     string `json:"device_info" binding:""`      // 设备信息
	IP             string `json:"ip" binding:""`               // ip
	City           string `json:"city" binding:""`             // 城市
	Url            string `json:"url" binding:""`
	JumpUrl        string `json:"jump_url" binding:""` // 跳转的URL
	AppID          string `json:"app_id" binding:""`
	Status         int    `json:"status" binding:""` // 转化状态：1 未转化 ，2 已转化，3=转化失败，4=已转化未上报，5、手动上报、6转化黑名单、7拓客云盾
	LogID          int    `json:"log_id" binding:""` // visit_log 表主键
	Ua             string `json:"ua" binding:""`
	ShopID         int    `json:"shop_id" binding:""`    // 商店id
	AdminID        int    `json:"admin_id" binding:""`   // 管理员id
	CompanyID      int    `json:"company_id" binding:""` // 公司id
	Num            uint   `json:"num" binding:""`
	OrderNum       string `json:"order_num" binding:""`
	IsCallback     int    `json:"is_callback" binding:""` // 是否回传
	PayMoney       int    `json:"pay_money" binding:""`   // 支付金额
	ReplyTime      int    `json:"reply_time" binding:""`  // 回传时间
}

// UpdateTkGeneralizeByIDRequest update params
type UpdateTkGeneralizeByIDRequest struct {
	ID uint64 `json:"id" binding:""` // uint64 id

	AdID           int    `json:"ad_id" binding:""`            // 广告id
	AdAccountID    int    `json:"ad_account_id" binding:""`    // 广告账户id
	TripartiteAdID string `json:"tripartite_ad_id" binding:""` // 第三方广告id
	ClickID        string `json:"click_id" binding:""`         // 广告用户唯一标识
	StytemType     string `json:"stytem_type" binding:""`      // 系统类型
	ProductID      int    `json:"product_id" binding:""`       // 商品ID
	PromoteID      int    `json:"promote_id" binding:""`       // 推广位ID
	ChannelID      string `json:"channel_id" binding:""`       // 渠道ID
	ChannelType    int    `json:"channel_type" binding:""`     // 平台id:1:腾讯，2：视频号广告
	CallbackNode   string `json:"callback_node" binding:""`    //  回传行为:	"COMPLETE_ORDER": "下单","PURCHASE":      "购买",
	DeviceInfo     string `json:"device_info" binding:""`      // 设备信息
	IP             string `json:"ip" binding:""`               // ip
	City           string `json:"city" binding:""`             // 城市
	Url            string `json:"url" binding:""`
	JumpUrl        string `json:"jump_url" binding:""` // 跳转的URL
	AppID          string `json:"app_id" binding:""`
	Status         int    `json:"status" binding:""` // 转化状态：1 未转化 ，2 已转化，3=转化失败，4=已转化未上报，5、手动上报、6转化黑名单、7拓客云盾
	LogID          int    `json:"log_id" binding:""` // visit_log 表主键
	Ua             string `json:"ua" binding:""`
	ShopID         int    `json:"shop_id" binding:""`    // 商店id
	AdminID        int    `json:"admin_id" binding:""`   // 管理员id
	CompanyID      int    `json:"company_id" binding:""` // 公司id
	Num            uint   `json:"num" binding:""`
	OrderNum       string `json:"order_num" binding:""`
	IsCallback     int    `json:"is_callback" binding:""` // 是否回传
	PayMoney       int    `json:"pay_money" binding:""`   // 支付金额
	ReplyTime      int    `json:"reply_time" binding:""`  // 回传时间
}

// GetTkGeneralizeByIDRespond respond detail
type GetTkGeneralizeByIDRespond struct {
	ID string `json:"id"` // convert to string id

	AdID           int       `json:"ad_id"`            // 广告id
	AdAccountID    int       `json:"ad_account_id"`    // 广告账户id
	TripartiteAdID string    `json:"tripartite_ad_id"` // 第三方广告id
	ClickID        string    `json:"click_id"`         // 广告用户唯一标识
	StytemType     string    `json:"stytem_type"`      // 系统类型
	ProductID      int       `json:"product_id"`       // 商品ID
	PromoteID      int       `json:"promote_id"`       // 推广位ID
	ChannelID      string    `json:"channel_id"`       // 渠道ID
	ChannelType    int       `json:"channel_type"`     // 平台id:1:腾讯，2：视频号广告
	CallbackNode   string    `json:"callback_node"`    //  回传行为:	"COMPLETE_ORDER": "下单","PURCHASE":      "购买",
	DeviceInfo     string    `json:"device_info"`      // 设备信息
	IP             string    `json:"ip"`               // ip
	City           string    `json:"city"`             // 城市
	Url            string    `json:"url"`
	JumpUrl        string    `json:"jump_url"` // 跳转的URL
	AppID          string    `json:"app_id"`
	Status         int       `json:"status"` // 转化状态：1 未转化 ，2 已转化，3=转化失败，4=已转化未上报，5、手动上报、6转化黑名单、7拓客云盾
	CreatedAt      time.Time `json:"created_at"`
	UpdatedAt      time.Time `json:"updated_at"`
	LogID          int       `json:"log_id"` // visit_log 表主键
	Ua             string    `json:"ua"`
	ShopID         int       `json:"shop_id"`    // 商店id
	AdminID        int       `json:"admin_id"`   // 管理员id
	CompanyID      int       `json:"company_id"` // 公司id
	Num            uint      `json:"num"`
	OrderNum       string    `json:"order_num"`
	IsCallback     int       `json:"is_callback"` // 是否回传
	PayMoney       int       `json:"pay_money"`   // 支付金额
	ReplyTime      int       `json:"reply_time"`  // 回传时间
}

// DeleteTkGeneralizesByIDsRequest request form ids
type DeleteTkGeneralizesByIDsRequest struct {
	IDs []uint64 `json:"ids" binding:"min=1"` // id list
}

// GetTkGeneralizesByIDsRequest request form ids
type GetTkGeneralizesByIDsRequest struct {
	IDs []uint64 `json:"ids" binding:"min=1"` // id list
}

// GetTkGeneralizesRequest request form params
type GetTkGeneralizesRequest struct {
	query.Params // query parameters
}

// ListTkGeneralizesRespond list data
type ListTkGeneralizesRespond []struct {
	GetTkGeneralizeByIDRespond
}
